import config from '@/config'


// 创建WebSocket连接
export const createWebSocket = (account,messageHander) => {
	// websocket链接地址
	const websocketUrl = config.wssUrl + account;
	// 设置重连间隔时间（毫秒）
	const reconnectInterval = 3000

	const socketTask = uni.connectSocket({
		url: websocketUrl,
		complete: () => {}
	});

	// 监听WebSocket连接打开事件
	socketTask.onOpen(() => {
		// console.log('WebSocket连接已打开')
	})

	// 监听WebSocket接收到服务器的消息事件
	socketTask.onMessage((res) => {
		messageHander(JSON.parse(res.data))
	})

	// 监听WebSocket错误事件
	socketTask.onError((err) => {
		//暂未处理出错
	})

	// 监听WebSocket连接关闭事件
	socketTask.onClose((res) => {
		if (res.code !== 1000) {
			// 异常断线重连
			reconnectWebSocket()
		}

	})

	// 重连WebSocket
	const reconnectWebSocket = () => {
		setTimeout(() => {
			createWebSocket(() => {})
		}, reconnectInterval)
	}

	return socketTask

}

// 发送WebSocket消息
export const sendWebSocketMessage = (socketTask, data) => {
	socketTask.send({
		data: JSON.stringify(data)
	})
}

// 关闭WebSocket连接
export const closeWebSocket = (socketTask) => {
	if (socketTask) {
		socketTask.close()
	}

}